package com.turing.post.transaction.util;

import java.math.BigInteger;
import java.util.Date;
import java.util.List;

import javax.ejb.Local;
import javax.ejb.Remote;

import com.turing.post.report.util.IncomeDaySettlement;
import com.turing.post.util.PCPSApplicationException;
import com.turing.post.util.PCPSWebInput;

/**
 * 商户交易记帐明细信息接口
 * 
 * @author ZXL
 * 
 */
@Remote
@Local
public interface MchAccDetailDao {
	/**
	 * 商户交易记帐明细信息插入
	 * 
	 * @param mad
	 *            商户交易记帐明细信息对象
	 * @throws PCPSApplicationException
	 *             异常信息
	 */
	public void insert(MchAccDetail mad) throws PCPSApplicationException;

	/**
	 * 根据商户号、交易日期、交易流水号检索商户卡交易记帐明细
	 * 
	 * @param merchantNo
	 *            商户号
	 * @param tranDate
	 *            交易日期
	 * @param tranSeqNo
	 *            交易流水号
	 * @return 商户交易记帐明细信息对象列表
	 */
	public List<MchAccDetail> getAllMchAccDetailByTranSeqNo(String merchantNo,
			Date tranDate, String tranSeqNo);

	/**
	 * 根据商户号、帐务日期产生商户与销售机构的收益按日汇总数据
	 * 
	 * @param merchantNo
	 * @param tranDate
	 * @return
	 */
	public List<IncomeDaySettlement> getAllIncomeDaySettlementByMerchantNo(
			String merchantNo, Date tranDate);

	/**
	 * 判断一定时间范围内是否存在交易记录
	 * 
	 * @param merchantNo
	 * @param startDate
	 * @param endDate
	 * @return
	 */
	public boolean merchantHasTransaction(String merchantNo, Date startDate,
			Date endDate);

	/**
	 * 持卡人消费情况表
	 * 
	 * @return List<Object[]>
	 */
	public List<Object[]> getMchAccDetailAll(PCPSWebInput webInput,
			String startDate, String endDate, BigInteger amount);
	
	/**
	 * 驿站卡缴费汇总表
	 * @param webInput
	 * @param startDate
	 * @param endDate
	 * @return
	 */
	public List<Object[]> getMchAccDetailDakTotale(PCPSWebInput webInput,
			String startDate, String endDate,String merchantNo);
}
